A common type of computer system output is a paper printout. The printing may be of text, graphics, data, etc. A printout may be needed for many reasons, including creating documentation and for sharing information between persons, for example.
An increasingly common printing system is an institutional setting wherein a computer system includes multiple computers and multiple printers. The computers and printers may be interconnected by one or more computer networks. A user may access the printers using the network. A network printing system is advantageous in that users can access multiple printers.
The printing system may extend over multiple rooms, multiple locations, multiple buildings and even multiple geographic locations. Such a printing system may be composed of different types and brands of devices that have been incorporated into a computer system at varying times. The result is a non-homogeneous network wherein addition of a new device may take appreciable time to integrate and configure. This is especially true when the computer system employs multiple printers.
However, there are drawbacks to the prior art approach. In the prior art, a user may access a particular printer if the user knows the printer, knows its characteristics and knows its address within the network. A user must send data to a known address in order to print. In addition, the user must know the characteristics of the printer or printers and must have an appropriate driver or driver selected beforehand. The user cannot send out a print job without knowing something about the printing system. The user cannot rely on the printing system to handle the print job in an appropriate or most efficient way, and cannot rely on the printing system to handle printer changes, additions or deletions. As a result, the task of printing may be made difficult when a printer or printers within the computer environment are added, deleted, replaced, moved or upgraded.
In the prior art, the job submission client must install a driver for every printer to be used. This driver is responsible for rendering a job from a client-format (such as Microsoft Graphics Device Interchange (GDI) format) into a device-specific format (such as Printer Control Language (PCL)-5c). This is especially troublesome for clients such as portable electronic devices that possess limited memory or limited processing resources. Often a driver is customized for a particular model number or configuration of a printer, meaning that changes to a printer require changes to the driver. Adding or changing a printer in the prior art therefore requires all job submission clients to be updated. This is complicated and time-consuming, even with only a relatively small number of job submission clients.
There are other problems with the prior art approach. In prior art printing, the user explicitly sends a print job to a particular printer, i.e., pushes the print job to a pre-designated printer. Therefore, in such push-based printing, if the user prints a document and the printer is jammed or disabled, the user cannot obtain the resulting printout at the next nearest printer unless the user manually reprints the job (i.e., pushes the print job to another printer, creating another print operation). Similarly, if the user prints a document and the printer is out of toner, a poor print is produced and the prior art printing system does not forward the job to a printer with available toner. Likewise, if the user prints a document and the printer is out of paper, the printer is blocked while waiting for the paper to be filled and the prior art printing system does not forward the job to a printer with available paper. Moreover, if the user wants to print a small document and the printer is busy, the user may have to wait until the current document is printed. The printing system does not forward the job to an available printer.
Therefore, there remains a need in the art for improvements in printing.